package com.ht.base.system.client;

import org.base.common.appexception.AppException;
import org.base.common.appexception.ResultData;

import java.util.List;
import java.util.Set;

/**
 * @Author hdengxian
 * @Date 2023/8/15 17:26
 */

public interface SysRoleMenuClient {
    /**
     * 保存角色与菜单的权限关系
     * @param sysRoleId
     * @param menuIdList
     * @return
     */
    ResultData<Boolean> saveRoleMenuRelation(Long sysRoleId, List<Long> menuIdList);

    /**
     * 删除角色与菜单的绑定关系
     * @param sysMenuId
     * @return
     */
    ResultData<Boolean> deleteRelationByMenuId(Long sysMenuId);

    /**
     * 通过角色ID获取角色的权限列表字符串集合
     * @param sysRoleId
     * @return
     */
    ResultData<Set<String>> getPermission(Long sysRoleId);

    /**
     * 根据角色ID获取菜单ID集合
     * @param sysRoleId
     * @return
     * @throws AppException
     */
    ResultData<List<Long>> getMenuIdListByUserId(Long sysRoleId) throws AppException;

    /**
     * 根据权限字符与角色ID统计条目。
     * @param permissionId
     * @param sysRoleId
     * @return
     * @throws AppException
     */
    ResultData<Integer> countPermission(String permissionId, Long sysRoleId) throws AppException;
}
